package com.example.threaddemo.error;

import java.nio.ByteBuffer;

/**
 * 写 nio程序时，ByteBuffer 写入读取数据时，可以通过 allocateDirect(),直接分配堆外内存，即JVM以外的物理内存，不受jvm的GC管理。
 * 避免java堆和Native堆的来回复制数据，可以显著提高效率。
 * 当本地内存使用完了，就会报这个异常。
 */
public class DirectBufferMemoryDemo {
    public static void main(String[] args) throws InterruptedException {
        System.out.println("配置的maxDirecMemory" + (sun.misc.VM.maxDirectMemory()/(1024)/1024) + "mb");
        Thread.sleep(500);
        //-XX:MaxDirectMemorySize=5m -Xms5m -Xmx5m -XX:+PrintGCDetails ,我们将堆外内存，设置为5m
        ByteBuffer bb = ByteBuffer.allocateDirect(6*1024*1024);
    }
}
